package com.firefightingiot.firefightingiot.web.mapper;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.firefightingiot.firefightingiot.model.DeviceNormalLog;
import com.firefightingiot.firefightingiot.model.statistics.DeviceNormalLogElectricEnergy;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

@Mapper
public interface DeviceNormalLogMapper extends BaseMapper<DeviceNormalLog> {

    List<DeviceNormalLog> getValueList(JSONObject jsonParam);

    List<DeviceNormalLog> getValueListByTwoIds(JSONObject jsonParam);

    /**
     *
     * @Title: createTable <br>
     * @Description: (建表) <br>
     * @param sql
     */
    void definitionTable(String sql);

    /**
     * 正常数据保存：电气火灾
     * @param jsonParam
     */
    void inserDeviceNormalLogElectricFire(JSONObject jsonParam);
    /**
     * 正常数据保存：建筑消防用水
     * @param jsonParam
     */
    void inserDeviceNormalLogFireWater(JSONObject jsonParam);
    /**
     * 正常数据保存：可燃气体
     * @param jsonParam
     */
    void inserDeviceNormalLogGas(JSONObject jsonParam);
    /**
     * 正常数据保存：灭火器
     * @param jsonParam
     */
    void inserDeviceNormalLogExtinguisher(JSONObject jsonParam);
    /**
     * 通过设备号查询正常数据列表：电气火灾
     * @param jsonParam
     */
    List<Map<String, Object>> getValueListByNumberForElectricFire(JSONObject jsonParam);
    /**
     * 通过设备号查询正常数据列表：电气火灾(充电桩)
     * @param jsonParam
     */
    List<Map<String, Object>> getValueListByNumberForChargingStation(JSONObject jsonParam);

    /**
     * 通过设备号查询正常数据列表：建筑消防用水
     * @param jsonParam
     */
    List<Map<String, Object>> getValueListByNumberForFireWater(JSONObject jsonParam);
    /**
     * 通过设备号查询正常数据列表：可燃气体
     * @param jsonParam
     */
    List<Map<String, Object>> getValueListByNumberForGas(JSONObject jsonParam);
    /**
     * 通过设备号查询正常数据列表：可燃气体
     * @param jsonParam
     */
    List<Map<String, Object>> getValueListByNumberForExtinguisher(JSONObject jsonParam);
    /**
     * 通过设备号查询正常数据列表：水泵
     * @param jsonParam
     */
    List<Map<String, Object>> getValueListByNumberForWaterPump(JSONObject jsonParam);
    /**
     * 通过设备号查询正常数据列表：温湿度
     * @param jsonParam
     */
    List<Map<String, Object>> getValueListByNumberForTemperatureHumidity(JSONObject jsonParam);

    /**
     *
     * @Title: haveTable <br>
     * @Description: (判断表是否存在) <br>
     * @param sql
     */
    String haveTable(String tableName);

    /**
     * 分组查询，往涛思传递数据
     * @param jsonParam
     */
    List<Map<String, Object>> getDeviceNormalLogAll(JSONObject jsonParam);
    /**
     * 分组查询，往涛思传递数据
     * @param jsonParam
     */
    List<Map<String, Object>> getDeviceNormalLogAlls(JSONObject jsonParam);

    void inserDeviceNormalLogSmoke(JSONObject fieldValueMap);

    List<Map<String, Object>> getValueListByNumberForSmoke(JSONObject jsonParam);

    Map<String, Object> getElectricEnergy(JSONObject jsonParam);

    List<Map<String, Object>> electricEnergyList(JSONObject jsonParam);

    Map<String, Object> getElectricDataDetails(JSONObject jsonParam);
    /**
     * 查询电能数据
     */
    List<Map<String, Object>> getElectricEnergyList(String table);
    /**
     * 批量插入电能数据
     */
    void insertElectricEnergyListZB(List<DeviceNormalLogElectricEnergy> list);
    void updateSmsVoiceMargin();

    List<Map<String, Object>> waterColumnBoxDataLogList(JSONObject jsonParam);

}
